--- title: "航班时间" created: 2025-11-28 tags: - 算法 --- # 航班时间 ## 题目 [航班时间](https://www.acwing.com/problem/content/1233/) ![[image-cbff30ca.png]] ## 思路分析 去乘起飞时间+航行时间+时差=去乘降落时间 (公式一) 回程起飞时间+航行时间-时差=回程降落时间 (公式二) 求:航行时间 已知:去乘起飞时间,回程起飞时间,去乘降落时间,回程降落时间 根据公式一+公式二: 去乘起飞时间+回程起飞时间+2\*航行时间=去乘降落时间+回程降落时间 航行时间=(去乘降落时间-去乘起飞时间+回程降落时间-回程起飞时间)/2 ## 代码实现 ```cpp #include using namespace std; int get_seconds(int h, int m, int s) { return h * 3600 + m * 60 + s; } int get_time() { string line; getline(cin, line); if (line.back() != ')') line += "(+0)"; int h1, m1, s1, h2, m2, s2, d; sscanf(line.c_str(), "%d:%d:%d %d:%d:%d (+%d)", &h1, &m1, &s1, &h2, &m2, &s2, &d); return get_seconds(h2, m2, s2) - get_seconds(h1, m1, s1) + d * 24 * 3600; } int main() { int T; scanf("%d", &T); getchar(); while (T -- ) { int time = (get_time() + get_time()) / 2; int hours = time / 3600; int minutes = time % 3600 / 60; int seconds = time % 60; printf("%02d:%02d:%02d\n", hours, minutes, seconds); } return 0; } ``` ## 同类题型 ## 视频讲解 --- ⬅️ [[2-Learning/02-算法/03-刷题理模型/暴力 枚举 模拟 问题/日期问题/日期问题|日期问题]] 🏠 [[00-刷题理模型]] ➡️ [[2-Learning/02-算法/03-刷题理模型/暴力 枚举 模拟 问题/智力测试|智力测试]]